const qs = require("qs");
import config from "@/config";
const baseUrl = config.baseUrl;

export function myAxiosGet(url) {
  return new Promise((r, j) => {
    // 创建一个XHR对象
    console.log("创建一个XHR对象");
    var xhr = new XMLHttpRequest();

    // 配置请求
    xhr.open("GET", baseUrl + url, true);

    // 设置响应类型为JSON
    xhr.responseType = "json";

    // 处理响应
    xhr.onload = function () {
      if (xhr.status === 200) {
        // 请求成功，处理响应数据
        console.log("xhr.response:", xhr.response);
        r(xhr.response);
      } else {
        // 请求失败
        console.error("Request failed. Returned status of " + xhr.status);
        j(xhr.response);
      }
    };
    // 发送请求
    xhr.send();
  });
}
export function myAxiosPost(url, data) {
  return new Promise((r, j) => {
    // 创建一个新的 XMLHttpRequest 对象
    var xhr = new XMLHttpRequest();

    // 配置请求
    // 第一个参数是请求方法（GET, POST, PUT, DELETE 等）
    // 第二个参数是请求的 URL
    // 第三个参数是异步还是同步（true 表示异步，false 表示同步，但通常建议使用异步）
    xhr.open("POST", baseUrl + url, true);

    // 设置请求头，告知服务器你正在发送 JSON 格式的数据
    xhr.setRequestHeader("Content-Type", "application/json");

    // let jsonString = qs.stringify(data);

    // 将 JSON 对象转换为 JSON 字符串
    var jsonString = JSON.stringify(data);

    // 发送请求
    // 如果请求是 POST 或 PUT，并且需要发送数据，那么应该在这里将数据作为参数传递
    xhr.send(jsonString);

    // 监听请求完成的事件
    xhr.onload = function () {
      if (xhr.status === 200) {
        // 请求成功，处理响应数据
        console.log(xhr.responseText); // 假设服务器返回的是文本或 JSON 字符串
        // 如果服务器返回的是 JSON，你可能需要这样做：
        // var responseData = JSON.parse(xhr.responseText);
        r(xhr.response);
      } else {
        // 请求失败，处理错误情况
        console.error("Request failed. Returned status of " + xhr.status);
        j(xhr.response);
      }
    };

    // 监听请求过程中的错误事件
    xhr.onerror = function () {
      // 处理网络错误等情况
      console.error("Network Error");
      j(xhr.response);
    };
  });
}
export function newGame(data) {
  let url = "newGame";
  return new Promise((r, j) => {
    myAxiosPost(url, data)
      .then((res) => {
        r(res);
      })
      .catch((res) => {
        j(res);
      });
  });
}
export function queryGeneralByPlayerId(id) {
  let url = "queryGeneralByPlayerId?player_id=" + id;
  return new Promise((r, j) => {
    myAxiosGet(url)
      .then((res) => {
        r(res);
      })
      .catch(() => {
        j(res);
      });
  });
}
export function queryGeneralDetail(id) {
  let url = "queryGeneralDetail?general_id=" + id;
  return new Promise((r, j) => {
    myAxiosGet(url)
      .then((res) => {
        r(res);
      })
      .catch(() => {
        j(res);
      });
  });
}
export function getmap() {
  let url = "getmap";
  return new Promise((r, j) => {
    myAxiosGet(url)
      .then((res) => {
        r(res);
      })
      .catch(() => {
        j(res);
      });
  });
}
